package MyApp; # 打包类名
use Mojo::Base 'Mojolicious'; # 调入mojo类

use MyApp::Model::Users ; # 调入本地Model类

sub startup {             # 子程序-启动
  my $c = shift; # $c为默认Controller
  $c->secrets(['Mojolicious rocks']); # 安全加密字符串
  $c->helper(users => sub { state $users = MyApp::Model::Users->new }); # 用助手方法绑定MyApp::Model::Users实例
  my $r = $c->routes; # $r 为当前controller默认router

  # 对 / 的路由绑定到 controller login 的index 方法，模板是index.html.ep
  $r->any('/')->to('login#index')->name('index');

  # 通过under 让所有/以下的地址都绑定 controller login的logged_in 方法，验证当前是否已登录用户，并通过$logged_in标量引用
  my $logged_in = $r->under->to('login#logged_in');

  # logged_in 方法返回两个结果1 或 undef ，也即真 或 假，当为真时访问'/protected'(地址绑定到login模块的protected方法)
  $logged_in->get('/protected')->to('login#protected');
  # logout 登出 ，'/logout' 绑定到 controller login的logout方法
  $r->get('/logout')->to('login#logout');
}

1;
